import Show from '../model/show.js';
import data from '../model/XdxzData.js';
import puppeteer from '../../../lib/puppeteer/puppeteer.js';
import common from'../../../lib/common/common.js';

import {
    isPlayerExist,
    iswork,
    workData,
    get_work_img,
    Read_work,
    delework,
    Add_星币,
    Write_player,
    getPlayerData
} from '../model/function.js';
export class xdxz_talent extends plugin {
    constructor() {
        super({
            name: '[xdxz]小镇人才市场',
            dsc: '星动小镇-小镇人才市场',
            event: 'message',
            priority: 9999999999,
            rule: [
                { 
                    reg: /^#?小镇人才市场(全职|兼职)?$/,
                    fnc: 'talent'
                },{ 
                    reg: /^#?工作((.*)|(.*)*(.*))$/,
                    fnc: 'work'
                },{ 
                    reg: /^#?查看工作$/,
                    fnc: 'lookwork'
                },{ 
                    reg: /^#?开始工作$/,
                    fnc: 'gowork'
                }
            ]
        })
    }
    async talent(e) {
        //不开放私聊功能
		if (!e.isGroup) {
			return e.reply(['该游戏只能在群内使用']);
		}
        const ID = [e.user_id, e.group_id];
        if (!isPlayerExist(ID[1], ID[0])) {
            e.reply(`你都还没加入星动小镇，哪来的人才市场给你看？(请先#加入小镇)`,true);
            return;
        }
        let thing_type = e.msg.replace('#?小镇人才市场', '');
		let img = await this.rcsc(e, thing_type);
		e.reply(img,true);
		return;
    }
    async work(e) {
        //不开放私聊功能
		if (!e.isGroup) {
			return e.reply(['该游戏只能在群内使用']);
		}
        const ID = [e.user_id, e.group_id];
        if (!isPlayerExist(ID[1], ID[0])) {
            e.reply(`你都还没加入星动小镇，怎么工作？(请先#加入小镇)`,true);
            return;
        }
        let thing = e.msg.replace('#?', '');
		thing = thing.replace('工作', '');
		let code = thing.split('*');
		let thing_name = code[0];
        let ifexist = data.rcsc_list.find((item) => item.name == thing_name);
		if (!ifexist) {
			e.reply(`小镇人才市场还没有这样的工作:${thing_name}`,true);
			return;
		}
        const user_qq =ID[0];//账号
        const date_time = new Date().getTime();//获取今天服务器时间
        let date_time2 = await redis.get(`Yunzai:xdxzgowork${user_qq}_time`);date_time2 = JSON.parse(date_time2); //获取用户上一次回宿舍时间
        const timecha = date_time-date_time2;
        ifexist.time = timecha;
        if (!iswork(ID[1], ID[0])) {
            workData(ID[1], ID[0],ifexist);
            e.reply(`应聘工作成功！发送【查看工作】即可查看工作详情`,true);
            return;
        }
        e.reply(`你已经有工作了！使用【查看工作】查看工作内容`, true);
        return;
    }
    async lookwork(e) {
        if (!e.isGroup) {
            return e.reply(['该游戏只能在群内使用']);
        }
        const ID = [e.user_id, e.group_id];
        if (!isPlayerExist(ID[1], ID[0])) {
            e.reply(`你都还没加入星动小镇，哪来的工作？(请先#加入小镇)`,true);
            return;
        }
        if (!iswork(ID[1], ID[0])) {
            e.reply(`笨蛋！你还没工作呢，请先去【小镇人才市场】看看`,true);
            return;
        }
        let img = await get_work_img(ID[1], ID[0],e);
        e.reply(img,true);
        return;
    }
    async rcsc(e, thing_type) {
        const ID = [e.user_id, e.group_id];
        let rcsc_list = data.rcsc_list;
        if (thing_type != '') {
            if (
                thing_type == '全职' ||
                thing_type == '兼职'
            ) {
                rcsc_list = rcsc_list.filter((item) => item.class == thing_type);
            }
        }
        let rcsc_data = {
            user_id: e.user_id,
            rcsc_list: rcsc_list,
        };
        const data1 = await new Show(e).get_rencaiData(rcsc_data);
        let img = await puppeteer.screenshot('rencai', {
            ...data1,
        });
        return img;
    }
    async gowork(e) {
        if (!e.isGroup) {
            return e.reply(['该游戏只能在群内使用']);
        }
        const ID = [e.user_id, e.group_id];
        if (!isPlayerExist(ID[1], ID[0])) {
            e.reply(`你都还没加入星动小镇，哪来的工作？(请先#加入小镇)`,true);
            return;
        }
        if (!iswork(ID[1], ID[0])) {
            e.reply(`笨蛋！你还没工作呢，无法开始工作！请先去【小镇人才市场】看看`,true);
            return;
        }
        const date_time = new Date().getTime();//获取今天服务器时间
        let work = await Read_work(ID[1], ID[0]);
        // 工作时长
        const user_qq =ID[0];//账号
        const hours = 8;//小时
        const totalMilliseconds = hours * 60 * 60 * 1000;
        let date_time2 = await redis.get(`Yunzai:xdxzgowork${user_qq}_time`);date_time2 = JSON.parse(date_time2); //获取用户上一次回宿舍时间
        const timecha = date_time-date_time2;
        const tl = work.tili;
        const jl = work.jingli;
        //读取用户json文件
        let player = await getPlayerData(ID[1], ID[0]);
        if(timecha<totalMilliseconds && timecha>0){
            e.reply(`工作还没够${hours}小时哦！`,true);
            return;
        }else if(timecha<=0 && work.class==='兼职'){
            e.reply(`好的！【${work.class}】${work.name}工作中，持续时间为${hours}小时,预计获得${work.xingbi}星币`,true);
            return;
        }else if(timecha<=0 && work.class==='全职'){
            e.reply(`好的！已经在【${work.class}】${work.name}工作中，持续时间为${hours}小时,预计获得${work.xingbi}星币`,true);
            return;
        }else{
            player.tili-= tl;
            player.jingli-=jl;
            await Write_player(ID[1], ID[0], player);
            e.reply(`好的！开始【${work.class}】${work.name}工作中，持续时间为${hours}小时,预计获得${work.xingbi}星币`,true);
            redis.set(`Yunzai:xdxzgowork${user_qq}_time`, JSON.stringify(date_time));//储存日期
            await common.sleep(totalMilliseconds);
            await Add_星币(ID[1], ID[0],work.xingbi);
            e.reply(`【${work.class}】${work.name}工作已完成，获得${work.xingbi}星币`,true);
            return;
        }
    }
}